With the proliferation of information generated daily and accessible to users over the Web, the need for intelligent electronic assistants to aid in locating and/or discovering useful or desired information amongst the morass of data is paramount. The use of natural language processing to search text to correctly recognize people, places, or things is fraught with difficulties. First, natural language is ambiguous. Almost every English word or phrase can be a place name somewhere in the world or a name of a person (i.e., a “person name”). Furthermore, many entities share the same name. For example, there are more than 20 cities named “Paris” in the United States. A person named “Will Smith,” could refer to the Hollywood movie actor and musician, the professional football player in the NFL, or many other people. Recognizing non-celebrity names has become more important with the exponential growth of the Web content, especially user created content such as blogs, Wikipedia, and profiles on social network sites like MySpace and FaceBook. Second, an entity could be mentioned or referred to in many different ways (e.g., pronouns, synonyms, aliases, acronyms, spelling variations, nicknames, etc.) in a document. Third, various knowledge sources about entities (e.g. dictionary, encyclopedia, Wikipedia, gazetteer, etc.) exist, and the size of these knowledge bases are extensive (e.g. millions of person names and place names). The sheer quantity of data is prohibitive for many natural language processing techniques.